SWAPPING


Es un mecanismo para mover programas entre memoria principal y secundaria, normalmente disco (dispositivo de swap). Con swapping, los programas pueden salir/entrar de/a memoria durante su tiempo de ejecución. Normalmente, un programa abandona la memoria para dejar espacio a otro. El swapping modifica el grafo de transición de estados de los procesos en un sistema multiprogramado, desdoblando los estados de bloqueado y preparado en dentro y fuera de memoria.


La función del sistema operativo que gestiona el intercambio entre disco y memoria se denomina intercambiador o swapper. La operación de escribir el programa en disco se conoce como swap-out, mientras que leer el programa de disco se denomina swap-in.


El swapping aporta las siguientes ventajas:




Para soportar swapping se requiere espacio para el intercambio en almacenamiento secundario, generalmente disco. Se puede utilizar un dispositivo específico independiente, una partición del disco, o incluso compartir la misma del sistema de ficheros.


El direccionamiento de los programas debe ser relativo a un registro base (reubicación dinámica). El swapper establece el nuevo valor del registro base para un proceso cada vez que lo carga en memoria.


El sacar un programa de memoria está motivado por la necesidad de obtener espacio libre, generalmente para ejecutar otro programa (quizás uno más prioritario). El swapper debe seleccionar cuidadosamente qué programas van a salir. Ya que, como hemos comentado, el swapping condiciona la planificación de procesos, algunos de los criterios a aplicar para seleccionar el proceso a sacar están relacionados con los parámetros de la planificación. Los criterios suelen ser:






El sacar procesos bloqueados plantea problemas cuando la razón del bloqueo es una operación de entrada/salida que se realice por DMA sobre un buffer de usuario (típicamente una operación de leer o escribir). Hay dos alternativas:


  1. Impedir el swap-out de los procesos con operaciones de DMA pendientes.


  1. La entrada/salida se hace siempre sobre buffers del sistema (residentes). Como se verá en la gestión de dispositivos, esta solución aportará otras ventajas adicionales.